#!/usr/bin/env python
# -*- encoding: utf-8 -*-
"""
主题: 字符串的I/O操作
问题: 你想使用操作类文件对象的程序来操作文本或二进制字符串。
提示 : 
    1. 模拟一个普通的文件的时候 StringIO 和 BytesIO 类是很有用的, 比如，在单元测试中
"""

import io

def recipe1():
    s = io.StringIO()
    n = s.write('Hello World\n')
    print(f"{n = }")
    print('This is a test', file=s)
    print(f"{s.getvalue() = }")

    # Wrap a file interface around an existing string
    s = io.StringIO('Hello\nWorld\n')
    print(f"{s.read(4)= }")
    print(f"{s.read()= }")

def recipe2():
    '''操作二进制数据'''
    s = io.BytesIO()
    s.write(b'binary data')
    print(f"{s.getvalue() = }")

def main():
    print('recipe1'.center(20, '*'))
    recipe1()
    print('recipe2'.center(20, '*'))
    recipe2()

if __name__ == '__main__':
    main()    